import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
 
 
class MultiWindows(QMainWindow): #直接一整个屏幕就是一个选项卡窗口
    count=0 #记录当前有多少个菜单项
    def __init__(self,parent=None):
        super(MultiWindows, self).__init__(parent)
        self.setWindowTitle('容纳多文档的窗口')
        self.setGeometry(800,450,500,400)#x,y,w,h
 
        #容纳多文档容器对象
        self.mdi=QMdiArea()
 
        bar=self.menuBar()
        file=bar.addMenu('File')
        file.addAction('New')
        file.addAction('cascade') #重叠
        file.addAction('Tiled')  #平铺
 
        file.triggered.connect(self.windowAction)
 
        self.setCentralWidget(self.mdi)
 
    def windowAction(self,q): #q是当前的单击菜单项,通过按钮名来进行不同的操作
        if q.text()=='New':
            self.count=self.count+1
            #子窗口对象
            sub=QMdiSubWindow()
            sub.setWidget(QTextEdit())
            sub.setWindowTitle('子窗口'+str(self.count))
            self.mdi.addSubWindow(sub)
            sub.show()
        #下面两个是对mdi中已有的窗口排布进行操作，而不是生成窗口
        elif q.text()=='cascade':
            self.mdi.cascadeSubWindows()
        elif q.text()=='Tiled':
            self.mdi.tileSubWindows()
 
 
if __name__=='__main__':
    app=QApplication(sys.argv)
    main=MultiWindows()
    main.show()
    sys.exit(app.exec_())
 
